Current applications are created with a generally fixed mechanism of interacting with a user. In many instances, companies utilize design specialists, focus groups, and other testing methods to create and design a user interface (UI) that attempts to provide a consistent, easy way for a user to interact with the application and access its functionality. Depending on the user, this can result in a longer or shorter learning curve for users to become proficient in understanding how to use the UI to access desired functionality. In many instances, users only learn enough about a particular application to actually perform their desired tasks and the program may be capable of much more than the user utilizes. Many users are either unaware of or unable to access all the capability provided by a program.
As a user's proficiency increases, the UI tends to remain relatively static, although some applications allow a user to customize the user interface such as by rearranging UI elements, adding and/or removing UI elements, and so forth. However, the basic manner in which the application operates remains static.
It is within this context that the present embodiments arise.